#include<iostream>
#include<algorithm>
using namespace std;
const int N = 310;
int a[N][N];
int r,c;
int dx[4] = {-1,0,1,0};
int dy[4] = {0,1,0,-1};
int meo[N][N];
int dfs(int x,int y)
{
    if(meo[x][y]) return meo[x][y];
    int res=1;
    for(int i=0;i<4;i++)
    {
        int x1=x+dx[i];
        int y1=y+dy[i];
        if(x1>=0&&x1<r&&y1>=0&&y1<c&&a[x1][y1]<a[x][y]){
            res=max(res,dfs(x1,y1)+1);
        }
    }
    meo[x][y]=res;
    return res;
}
int main()
{
    cin >> r >> c;
    for(int i=0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            cin >> a[i][j];
        }
    }
    int ans=0;
    for(int i=0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            ans=max(ans,dfs(i,j));
        }
    }
    cout << ans << endl;
    return 0;
}